package cn.stylefeng.guns.modular.business.service;

import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.business.entity.UserAccount;
import cn.stylefeng.guns.modular.business.model.params.UserAccountParam;
import cn.stylefeng.guns.modular.business.model.result.UserAccountResult;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 用户账户 服务类
 * </p>
 *
 * @author pzp
 * @since 2019-08-04
 */
public interface UserAccountService extends IService<UserAccount> {

    /**
     * 新增
     *
     * @author pzp
     * @Date 2019-08-04
     */
    void add(UserAccountParam param);

    /**
     * 删除
     *
     * @author pzp
     * @Date 2019-08-04
     */
    void delete(UserAccountParam param);

    /**
     * 更新
     *
     * @author pzp
     * @Date 2019-08-04
     */
    void update(UserAccountParam param);

    /**
     * 查询单条数据，Specification模式
     *
     * @author pzp
     * @Date 2019-08-04
     */
    UserAccountResult findBySpec(UserAccountParam param);

    /**
     * 查询列表，Specification模式
     *
     * @author pzp
     * @Date 2019-08-04
     */
    List<UserAccountResult> findListBySpec(UserAccountParam param);

    /**
     * 查询分页数据，Specification模式
     *
     * @author pzp
     * @Date 2019-08-04
     */
    LayuiPageInfo findPageBySpec(String userName,String payMode);

    /**
     * 添加或者修改账号
     *
     * @param id      账户id
     * @param userId  用户id
     * @param realName  真实姓名
     * @param payMode 交易方式：0：支付宝，1：微信，2：银行卡
     * @param account 账号
     * @param bank    开户行
     */
    void addOrUpdate(Integer id,String realName, Long userId, Integer payMode, String account, String bank);

    /**
     * 删除账户
     *
     * @param id 账户id
     */
    void delete(Integer id);

    /**
     * 账号列表
     *
     * @param userId  用户id
     * @param payMode 交易方式：0：支付宝，1：微信，2：银行卡
     * @return
     */
    List<UserAccount> list(Long userId, Integer payMode);
}
